/*
Copyright 2023 Sangfor Technologies Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package operations

// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the swagger generate command

import (
	"net/http"

	"github.com/go-openapi/errors"
	"github.com/go-openapi/runtime/middleware"
	"github.com/go-openapi/strfmt"
	"github.com/go-openapi/validate"
)

// NewDeleteFaultsIDParams creates a new DeleteFaultsIDParams object
//
// There are no default values defined in the spec.
func NewDeleteFaultsIDParams() DeleteFaultsIDParams {

	return DeleteFaultsIDParams{}
}

// DeleteFaultsIDParams contains all the bound params for the delete faults ID operation
// typically these are obtained from a http.Request
//
// swagger:parameters DeleteFaultsID
type DeleteFaultsIDParams struct {

	// HTTP Request Object
	HTTPRequest *http.Request `json:"-"`

	/*The id generated during fault injected.
	  Required: true
	  Max Length: 16
	  Min Length: 16
	  Pattern: ^[a-f0-9]*$
	  In: path
	*/
	ID string
}

// BindRequest both binds and validates a request, it assumes that complex things implement a Validatable(strfmt.Registry) error interface
// for simple values it will use straight method calls.
//
// To ensure default values, the struct must have been initialized with NewDeleteFaultsIDParams() beforehand.
func (o *DeleteFaultsIDParams) BindRequest(r *http.Request, route *middleware.MatchedRoute) error {
	var res []error

	o.HTTPRequest = r

	rID, rhkID, _ := route.Params.GetOK("id")
	if err := o.bindID(rID, rhkID, route.Formats); err != nil {
		res = append(res, err)
	}
	if len(res) > 0 {
		return errors.CompositeValidationError(res...)
	}
	return nil
}

// bindID binds and validates parameter ID from path.
func (o *DeleteFaultsIDParams) bindID(rawData []string, hasKey bool, formats strfmt.Registry) error {
	var raw string
	if len(rawData) > 0 {
		raw = rawData[len(rawData)-1]
	}

	// Required: true
	// Parameter is provided by construction from the route
	o.ID = raw

	if err := o.validateID(formats); err != nil {
		return err
	}

	return nil
}

// validateID carries on validations for parameter ID
func (o *DeleteFaultsIDParams) validateID(formats strfmt.Registry) error {

	if err := validate.MinLength("id", "path", o.ID, 16); err != nil {
		return err
	}

	if err := validate.MaxLength("id", "path", o.ID, 16); err != nil {
		return err
	}

	if err := validate.Pattern("id", "path", o.ID, `^[a-f0-9]*$`); err != nil {
		return err
	}

	return nil
}
